package com.lzh.others.leetcode;

import java.util.ArrayList;
import java.util.List;

/**
 * 按照既定顺序创建目标数组
 * 题目描述
 * 给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组：
 * <p>
 * 目标数组 target 最初为空。
 * 按从左到右的顺序依次读取 nums[i] 和 index[i]，在 target 数组中的下标 index[i] 处插入值 nums[i] 。
 * 重复上一步，直到在 nums 和 index 中都没有要读取的元素。
 * 请你返回目标数组。
 * <p>
 * 题目保证数字插入位置总是存在。
 */
public class LeetCode1389 {

    public static int[] createTargetArray(int[] nums, int[] index) {
        if (nums == null || index == null) {
            return null;
        }
        List<Integer> targetList = new ArrayList<>();
        int numLength = nums.length;
        int indexLength = index.length;
        for (int i = 0; i < indexLength; i++) {
            if (i > (numLength - 1)) {
                break;
            }
            int num = nums[i];
            int ind = index[i];
            targetList.add(ind, num);
        }
        int size = targetList.size();
        int[] target = new int[size];
        for (int i = 0; i < size; i++) {
            target[i] = targetList.get(i);
        }
        return target;
    }

    public static void main(String[] args) {
        int[] nums = new int[]{0, 1, 2, 3, 4};
        int[] index = new int[]{0, 1, 2, 2, 1};
        int[] targetArray = createTargetArray(nums, index);
    }
}

